<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组方法总结</title>
</head>
<body>
<p>JavaScript 提供了多种<b>新增，移除，替换</b>数组元素的方法，但是有些会影响原来的数组；有些则不会，而是新建了一个数组。</p>
</body>
<script>
    window.onload = function(){
        var arr1 = [1,2,3,4,5];

        /*1. 新增：影响原数组
            使用 array.push() 和 array.ushift() 新增元素会影响原来的数组,返回新数组的长度。*/
        //var arr2 = arr1.push(6);
        //var arr2 = arr1.unshift(0);

        /*2. 新增：不影响原数组array.concat() 返回一个新的数组*/
        //var arr2 = arr1.concat(7);










        /*3. 移除：影响原数组
        使用 array.pop() 和 array.shift() array.splice()移除数组元素时，会影响原来的数组,返回的是被移除的数据。*/
        //var arr2 = arr1.pop();
        //var arr2 = arr1.shift();
        //var arr2 = arr1.splice(0,2);

        /*4. 移除：不影响原数组
            array.filter() 方法基于原数组创建一个新数组，新数组仅包含匹配特定条件的元素*/
        /*var arr2 = arr1.filter(function(value,index){
            return value % 2 == 0;
        });*/


        //另一种不影响原数组的方式是 array.slice(),返回被截取的元素
        //var arr2 = arr1.slice(0,2);










        /*5. 替换：影响原数组
        如果知道替换哪一个元素，可以使用 array.splice(),返回被替换的元素*/
        //var arr2 = arr1.splice(0,2,"replace");


        /*6. 替换：不影响原数组
        可以使用 array.map() 创建一个新数组，并且可以检查每一个元素，根据特定的条件替换它们*/
        var arr2 = arr1.map(function(value,index){
            return value+10;
        });



        console.log(arr1);
        console.log(arr2);


    };
</script>
</html>